/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.com.cotelasa.scp.dao.impl;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import pe.com.cotelasa.common.dao.DaoImpl;
import pe.com.cotelasa.common.dao.excepcion.DAOException;
import pe.com.cotelasa.scp.dao.IDAOProveedorServicio;
import pe.com.cotelasa.scp.dominio.common.ESTADO_REGISTRO;
import pe.com.cotelasa.scp.entidad.ProveedorServicio;

/**
 *
 * @author usuario
 */
@Repository("daoProveedorServicio")
public class DAOProveedorServicioImpl extends DaoImpl<ProveedorServicio, Integer> implements IDAOProveedorServicio, Serializable{
    
    @Autowired
    private SessionFactory sessionFactory;

    @Transactional
    public Collection<ProveedorServicio> listarProveedoresPorServicio(ProveedorServicio proveedorServicio) throws DAOException {
        List<ProveedorServicio> listaProveedoresPorServicio = new ArrayList<ProveedorServicio>();
        try {
            sessionFactory.getCurrentSession().flush();
            listaProveedoresPorServicio = sessionFactory.getCurrentSession().createCriteria(ProveedorServicio.class)
                    .add(Restrictions.like("estadoRegistro", ESTADO_REGISTRO.ACTIVO.getValor()))
                    .add(Restrictions.eq("servicio", proveedorServicio.getServicio()))
                    .list();

        } catch (Exception e) {
            throw new DAOException(e.getMessage(), e);
        }

        return listaProveedoresPorServicio;
    }
    
    @Transactional
    public Collection<ProveedorServicio> listarPorProveedor(ProveedorServicio proveedorServicio) throws DAOException{
        Collection<ProveedorServicio> lista = null;
        try {
            sessionFactory.getCurrentSession().flush();
            lista = sessionFactory.getCurrentSession().createCriteria(ProveedorServicio.class)
                    .add(Restrictions.like("estadoRegistro", ESTADO_REGISTRO.ACTIVO.getValor()))
                    .add(Restrictions.eq("proveedor", proveedorServicio.getProveedor()))
                    .list();
            
            return lista; 

        } catch (Exception e) {
            throw new DAOException(e.getMessage(), e);
        }

    }
}
